#ifndef __RENDER_COMMAND_H__
#define __RENDER_COMMAND_H__

#include <glm/glm.hpp>
#include <glm/detail/type_mat.hpp>

namespace Hope {

    class RenderCommand
    {
    public:
        enum class Type
        {
            UNKNOWN_COMMAND,
            QUAD_COMMAND,
            BATCH_COMMAND,
            MESH_COMMAND,
            TRIANGLES_COMMAND,
        };

        void init(float globalZOrder, const mat4 &modelviewTransform);

        float GetGlobalOrder() const;

        Type GetType() const;

        bool IsTransparent() const;

        void SetTransparent();

        bool GetDepth() const;

    protected:
        RenderCommand();

        virtual ~RenderCommand();

    protected:
        float m_globalOrder;

        bool m_skipBatching;

        bool m_transparent;

        float m_depth;
    };

}

#endif 
